package com.modern.devtools.interfaces;

import com.modern.devtools.model.ServiceStatus;

/**
 * Interface for different monitoring strategies.
 * Allows for various ways to check service status (e.g., systemd, process, port, etc.)
 */
public interface MonitorStrategy {
    
    /**
     * Checks the status of a service using this strategy
     * @param serviceId The ID of the service to check
     * @param serviceName The name of the service to check
     * @param serverId The ID of the server where the service runs
     * @param parameters Additional parameters needed for this strategy
     * @return ServiceStatus with the current status and metrics
     */
    ServiceStatus checkStatus(String serviceId, String serviceName, String serverId, Object... parameters);
    
    /**
     * Gets the type of this monitoring strategy
     * @return A string representing the type of monitoring strategy
     */
    String getStrategyType();
    
    /**
     * Validates if the parameters provided are sufficient for this strategy
     * @param parameters Parameters to validate
     * @return true if parameters are valid, false otherwise
     */
    boolean validateParameters(Object... parameters);
}